<?php


class PaymentAction extends action {
    
    private $smarty;
    private $em;
    
    function __construct($smarty, $em) {
        $this->smarty = $smarty;
        $this->em = $em;
    }
    
    public function efetuar(){
        require_once '../Service/PlanService.php';
        require_once '../Service/UserService.php';
        require_once '../Model/Plan.php';
        require_once '../Model/User.php';
        $planService = new PlanService($this->em);
        $userService = new UserService($this->em);
        
        $planReturn; //Variavel que vai ser enviada para o template
        $planExec = true; //Variavel para validar se o processo foi executado completamente        
        $idPlan = (int) $_POST['id_plan'];
        $idUser = (int) $_POST['id_user'];
        $plan = new Plan();
        $user = new User(); 
        $plan = $planService->findById('Plan', $idPlan);
        $user = $userService->findById('User', $idUser);
         
        
        if ($planExec){
            if($plan->getIdPlan() == null || empty($plan->getIdPlan())){
                $planReturn = "Plano inválido.";
                $planExec = false;
            }
        }
        
        if ($planExec){
            if($user->getIdUser() == null || empty($user->getIdUser())){
                $planReturn = "Usuário inválido.";
                $planExec = false;
            }
        }
        
        $paymentRequest = new PagSeguroPaymentRequest(); //instancia a requisição de pagamento
        $paymentRequest->addItem($plan->getIdPlan(), $plan->getDescription(), 1, $plan->getTotalPrice()); //Adiciona o plano para requisicao de pagamento
        $paymentRequest->setCurrency("BRL"); //Set do tipo de moeda, real
        
        //Set de info do comprador
        $paymentRequest->setSender(
            $_POST[$user->getName()],
            $_POST[$user->getEmail()],
            $_POST[$user->getPhoneNumber()],
            $_POST[$user->getCpfCnpj()]
        );

        $paymentRequest->setRedirectUrl("http://www.dealimoveis.com.br/obrigado");
        
        try {
            // autenticação com pagsguro - Credenciais
            $credentials = new PagSeguroAccountCredentials("projetoimoveisweb@gmail.com",
                "6E930A8E098B4B8B99E135E878B63237");
            // Registra a requisicao de pagamento no pagseguro para obter a url, após redireciona o cliente
            $url = $paymentRequest->register($credentials);

            self::printPaymentUrl($url);

        } catch (PagSeguroServiceException $e) {
            die($e->getMessage());
        }
        
        
        
    }
    
}